package main

import "fmt"

/*
【1】方法是作用在指定的数据类型上、和指定的数据类型绑定，因此自定义类型，都可以有方法，而不仅仅是struct

var a A
a.test()

注意：
（1）test方法中参数名字随意起
（2）结构体Person和test方法绑定，调用test方法必须靠指定的类型：Person
（3）如果其他类型变量调用test方法一定会报错。
（4）结构体对象传入test方法中，值传递，和函数参数传递一致。
*/
//方法的声明和调用格式
type A struct {
	Num int
}

func (a A) test() {
	a.Num = 888
	fmt.Println(a.Num)
}

func main() {
	//创建结构体对象
	var p A
	//（1）func (a A) test()相当于A结构体有一个方法叫test
	//（2）(a A)体现方法test和结构体A绑定关系
	p.Num = 999
	//方法调用为值传递,不是引用传递,不会改变 p.Num
	p.test()
	fmt.Println(p.Num)
}
